//
//  LGTimeTools.h
//  LuxuryGoods
//
//  Created by 刘星辰 on 2018/5/19.
//  Copyright © 2018年 Future. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface LGTimeTools : NSObject

/**
 获取传入时间与现在时间的年份差，并转成 "3年" 格式的字符串
 
 @param toDateString 传入时间字符串， yyyy-MM-dd HH:mm:ss
 @return NSString 生成的字符串
 */
+ (NSString *)compareYear:(NSString *)toDateString;


/**
 根据生日计算年龄
 
 @param birth 生日字符串
 @return NSInteger 年龄
 规则：计算出年份差，判断当前月份是否小于生日月份或者同一月中当天是否小于生日当天
 是 返回年份差-1  否 返回年份差
 */
+ (NSInteger)getAgeFromBirthDay:(NSString*)birth;


#pragma mark - NSString 转 NSDate


/**
 字符串转成 yyyy-MM-dd 格式的NSDate
 
 @param string 传入的字符串
 @return NSDate 生成的NSDate
 */
+ (NSDate *)dateFromShortString:(NSString*)string;


/**
 字符串转成 yyyy-MM-dd HH:mm:ss 格式的NSDate
 
 @param string 传入的字符串
 @return NSDate 生成的NSDate
 */
+ (NSDate*)dateFromString:(NSString*)string;


#pragma mark - NSDate 转 NSString


/**
 NSDate转成 "yyyy-MM-dd HH:mm:ss" 格式的字符串
 
 @param date 传入的NSDate
 @return NSString 生成的字符串
 */
+ (NSString *)formatDateWithDate:(NSDate *)date;


/**
 NSDate转成 "yyyy-MM-dd" 格式的字符串
 
 @param date 传入的NSDate
 @return NSString 生成的字符串
 */
+ (NSString *)formatYearMonthDayStringWithDate:(NSDate *)date;


/**
 NSDate转成 "周几" 格式的字符串
 
 @param date 传入的字符串
 @return NSString 生成的字符串
 */
+ (NSString *)getweekStringFromDate:(NSDate *)date;


#pragma mark - NSString 转 NSString


/**
 根据传入的字符串生成不同的格式
 
 @param dateStr 传入的字符串
 @param mode 对应的类型
 1 yyyy-MM-dd (年-月-日)
 2 yyyy年MM月dd日 (%d年%d月%d日）
 3 yyyy-MM-dd HH:mm (年-月-日 时:分）
 @return NSString 生成的字符串
 */
+ (NSString *)formatDate:(NSString *)dateStr mode:(NSInteger)mode;


/**
 生成 "MM-dd"(月-日) 格式的字符串
 
 @param string 传入的字符串
 @return NSString 生成的字符串
 */
+ (NSString *)mouthDayStringFromString:(NSString *)string;


/**
 生成 "MM月dd日"(%d月%d日) 格式的字符串
 
 @param string 传入的字符串
 @return NSString 生成的字符串
 */
+ (NSString *)newMouthDayString:(NSString *)string;


/**
 生成 "星期几" 格式的字符串
 
 @param dateString 传入的字符串
 @return NSString 生成的字符串
 */
+ (NSString *)getweekStringFromDateString:(NSString *)dateString;


/**
 生成 "HH:mm"(时:分) 格式的字符串
 
 @param dateString 传入的字符串
 @return NSString 生成的字符串
 */
+ (NSString *)getHourMinuteFromDateString:(NSString *)dateString;


/**
 生成 "MM-dd HH:mm"(月-日 时:分) 格式的字符串
 
 @param dateString 传入的字符串
 @return NSString 生成的字符串
 */
+ (NSString *)getMonthDayHourMinuteStringFromString:(NSString *)dateString;


/**
 生成 "刚刚/几分钟前/几小时前/几天前/" 格式的字符串
 
 @param dateString 传入的字符串
 @return NSString 生成的字符串
 */
+ (NSString *)prettyDateWithReference:(NSString *)dateString;


/**
 生成 "时:分/昨日/月-日/" 格式的字符串
 
 @param dateString 传进来的字符串
 @return 生成的字符串
 注意：今天之内 返回"HH:mm"
 昨天之内 返回"昨日"
 昨天之前 返回"MM-dd"
 */
+ (NSString *)generateDifferentTypes:(NSString *)dateString;


#pragma mark - 日期比较


/**
 与当前时间做比较,判断是在当前时间之前，还是之后
 
 @param compareTime 传入的字符串
 @return 布尔值 早于当前时间 NO   晚于当前时间 YES
 */
+ (BOOL)compareNow:(NSString *)compareTime;


/**
 比较两个date的年月日 返回一个NSComparisonResult的枚举值 外面自己处理
 
 @param criterionDate 比较时间的标准
 @param comparedDate 拿来比较的时间
 */
+ (NSComparisonResult)compareYMDBetweenCriteriondate:(NSDate *)criterionDate andComparedDate:(NSDate *)comparedDate;


/**
 与当前时间做比较，返回相差分钟数
 
 @param compareTime 传入的字符串
 @return NSInteger 计算出的分钟数
 */
+ (NSInteger)countMinuteFromTo:(NSString *)compareTime;


/**
 判断两个日期是否为同一天
 
 @param date1 日期1
 @param date2 日起2
 @retrun NSComparisonResult 比较的结果
 */
+ (NSComparisonResult)compareDayWithData1:(NSDate *)date1 date2:(NSDate *)date2;
@end
